package jiaerc.moreingredients.effect;

import net.minecraft.entity.LivingEntity;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectType;
import net.minecraft.util.DamageSource;


import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Map;
import java.util.WeakHashMap;

//这个效果要求在获得效果的一瞬间直接造成一定的伤害，
// 持续时间内需要和水等物品才可以去除这个效果，否则持续时间结束的时候再造成一段伤害
public class EffectSpicy extends Effect {
    // 用于存储实体是否喝过水的标记
    private static final Map<LivingEntity, Boolean> drankWaterMap = new WeakHashMap<>();
    //用于储存首次伤害
    private static final Map<LivingEntity, Boolean> initialDamageMap = new WeakHashMap<>();

    public EffectSpicy() {
        super(EffectType.HARMFUL, 0xFF4500); // 橙色效果粒子
    }
    //去除辛辣的效果
    @Override
    @ParametersAreNonnullByDefault
    public void applyEffectTick(LivingEntity entity, int amplifier) {
        // 处理结束伤害
        int remaining = entity.getEffect(this).getDuration();
        if (remaining <= 1) {
            if (!drankWaterMap.getOrDefault(entity, false)) {
                entity.hurt(DamageSource.MAGIC, 1.0F+amplifier);
            }
            drankWaterMap.remove(entity);
            initialDamageMap.remove(entity); // 清除状态
        }
    }
    //确保每帧都要执行
    @Override
    public boolean isDurationEffectTick(int duration, int amplifier) {
        return true; // 确保每tick都执行逻辑
    }
    // 提供给喝水处理器调用的方法
    public static void markAsDrankWater(LivingEntity entity) {
        drankWaterMap.put(entity, true);
    }
}